using System;
using System.Collections.Generic;
using SGP.IDAL;
using SGP.Nhibernate.Model;

namespace SGP.NhibernateDAL
{
    /// <summary>
    /// Classe de operacoes com o banco de dados
    /// </summary>
    public class PatrimonioDAL : IPatrimonioDAL
    {
        #region CRUD Methods

        /// <summary>
        /// Carrega o objeto atraves do id
        /// </summary>
        /// <param name="idPatrimonio"></param>
        /// <returns></returns>
        public Patrimonio Load(int idPatrimonio)
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");
        }

        /// <summary>
        /// Retorna todos os patrimonios cadastrados
        /// </summary>
        /// <returns>Lista de Patrimonios</returns>
        public IList<Patrimonio> FindAll()
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");
        }

        /// <summary>
        /// Retorna todos os patrimonios de uma pessoa
        /// </summary>
        /// <param name="idPessoa"></param>
        /// <returns></returns>
        public IList<Patrimonio> FindByPessoa(int idPessoa)
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");

        }
        /// <summary>
        /// Procura pelo nome do patrimonio
        /// </summary>
        /// <param name="nomePatrimonio"></param>
        /// <returns></returns>
        public IList<Patrimonio> FindByNome(string nomePatrimonio)
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");
        }

        public IList<Patrimonio> FindByQuantidade(int quantidade)
        {
            throw new NotImplementedException();
        }

        public IList<Patrimonio> FindByCor(string cor)
        {
            throw new NotImplementedException();
        }

        public IList<Patrimonio> FindByLargura(decimal largura)
        {
            throw new NotImplementedException();
        }

        public IList<Patrimonio> FindByAltura(decimal altura)
        {
            throw new NotImplementedException();
        }

        public IList<Patrimonio> FindByProfundidade(decimal profundidade)
        {
            throw new NotImplementedException();
        }

        public IList<Patrimonio> FindByPeso(decimal peso)
        {
            throw new NotImplementedException();
        }

        public IList<Patrimonio> FindByPrecoCompra(decimal precoCompra)
        {
            throw new NotImplementedException();
        }

        public IList<Patrimonio> FindByPrecoVenda(decimal precoVenda)
        {
            throw new NotImplementedException();
        }

        public IList<Patrimonio> FindByAtual(decimal precoAtual)
        {
            throw new NotImplementedException();
        }

        public IList<Patrimonio> FindByDataAquisicao(DateTime dataAquisicao)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Procura pela data de aquisicao
        /// </summary>
        /// <param name="dataAquisicao"></param>
        /// <returns></returns>
        public IList<Patrimonio> FindByData(DateTime dataAquisicao)
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");
        }

        /// <summary>
        /// Procura pelo tipo do patrimonio
        /// </summary>
        /// <param name="dsTipo"></param>
        /// <returns></returns>
        public IList<Patrimonio> FindByTipo(string dsTipo)
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");

        }

        /// <summary>
        /// Procura pelo preco atual de mercado do patrimonio
        /// </summary>
        /// <param name="precoAtual"></param>
        /// <returns></returns>
        public IList<Patrimonio> FindByPrecoAtual(decimal precoAtual)
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");
        }

        /// <summary>
        /// Insere um patromonio no banco
        /// </summary>
        /// <param name="patrimonio"></param>
        public void Insert(Patrimonio patrimonio)
        {

            throw new NotImplementedException("Metodo ainda nao implementado.");

        }

        /// <summary>
        /// Atualiza um patrimonio do banco de dados
        /// </summary>
        /// <param name="patrimonio"></param>
        public void Update(Patrimonio patrimonio)
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");
        }

        /// <summary>
        /// Remove o patrimonio do banco de dados
        /// </summary>
        /// <param name="idPatrimonio"></param>
        public void Delete(int idPatrimonio)
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");
        }

        #endregion

        #region Private Methods
        private static IList<Patrimonio> ConvertToGenericList(Array array)
        {
            throw new NotImplementedException("Metodo ainda nao implementado.");
        }
        #endregion

    }
}